package main

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func HandleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

var client *oss.Client

func main() {
	os.Setenv("OSS_ACCESS_KEY_ID", "LTAI5tBywHDSaqpsrjBVycnr")
	os.Setenv("OSS_ACCESS_KEY_SECRET", "Ffp2jJJIPqsDSGEmM3iMgtVJaxNCQJ")
	initClient()
	bucketName := "jwkj-static"
	objectName := "images/20230322/c81a5ece-bfd7-41b3-a80e-da54ead9c8d8.png"
	unfreeze(bucketName, objectName)
}

func initClient() {
	// 从环境变量中获取访问凭证。运行本代码示例之前，请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint，以华东1（杭州）为例，填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	client, err = oss.New("oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		HandleError(err)
	}
}

func unfreeze(bucketName string, objectName string) {

	// 填写存储空间名称，例如examplebucket。
	//bucketName := "examplebucket"
	// 填写不包含Bucket名称在内的Object的完整路径，例如exampledir/exampleobject.txt。
	//objectName := "exampledir/exampleobject.txt"
	archiveBucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}
	// 解冻归档类型Object。
	configuration := oss.RestoreConfiguration{Days: 2, Tier: string(oss.RestoreExpedited)}
	err = archiveBucket.RestoreObjectDetail(objectName, configuration)
	if err != nil {
		HandleError(err)
	}
	fmt.Println("ArchiveSample completed")
}
